"""
文件名: HomePage.py
作用: 封装ECShop项目, 对首页的元素进行定位和操作的封装
在POM设计模式下, 将项目为三层
    1. 基础层: 对selenium进行二次封装
    2. 操作层: 对页面中的元素进行定位进行操作
    3. 业务层: 对封装好的元素操作进行调用, 组成用例
"""
# 从common文件夹下的Base.py文件, 导入Base类和open_browser方法
from time import sleep
from common.Base import Base, open_browser
from selenium.webdriver.common.by import By


class HomePage(Base):  # 页面类, 必须继承Base类, 而进行元素定位+元素操作
    """表现层: 制作每个元素的定位器"""
    _login_loc = (By.PARTIAL_LINK_TEXT, "请登录")  # 登录链接定位器
    """操作层: 对每一个元素进行的操作"""

    def click_login(self):
        """
        ECShop首页, 点击登录链接
        1.调用Base类中click方法
        2.click方法调用了Base页面对selenium元素定位的二次封装方法: _find_element()
        3._find_element()会返回一个元素: WebElement
        4.click实现的就是, 元素.click()
        5.在当前页面,调用时,要给click调用的_find_element(), 传入locator参数
        :return:
        """
        self.click(self._login_loc)


if __name__ == '__main__':
    home = HomePage(open_browser())
    home.get_url("http://localhost:8080/ecshop/")
    home.click_login()
    sleep(3)
    home.close_browser()
